package cn.pegasus.teamwork.sysconfig.service;

import java.util.List;
import java.util.Map;

import cn.iyizhan.teamwork.base.service.BaseService;
import cn.iyizhan.teamwork.base.util.PageObject;
import cn.pegasus.teamwork.sysconfig.entity.SysConfigMessage;
import cn.pegasus.teamwork.sysconfig.mapper.SysConfigMessageMapper;

/**
 * @ClassName: SysConfigMessageService
 * @Description:(系统消息service)
 * @author zhoulibo
 * @date 2015年12月3日 下午5:55:53
 */
public interface SysConfigMessageService extends BaseService<SysConfigMessage, SysConfigMessageMapper> {
	
	/**
	 * @Title: addMessage
	 * @Description: TODO(添加消息)
	 * @param map
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return Map<String,Object> 返回类型
	 * @date 2015年12月5日 下午4:08:08
	 * @throws
	 */
	public void addMessage(int userType,String msgType, String msgTitle, String msgContent,String msgAcceptUserid) throws Exception;


	/**
	 * @Title: addMessage
	 * @Description: TODO(添加消息)
	 * @param map
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return Map<String,Object> 返回类型
	 * @date 2015年12月5日 下午4:08:08
	 * @throws
	 */
	public Map<String, Object> addMessage(Map<String, Object> map, Long userId, Integer appId, int isPush) throws Exception;

	/**
	 * @Title: getSysConfigMessageinfo
	 * @Description: TODO(获取用户消息列表)
	 * @param userId
	 *            用户ID
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return SysConfigMessage 返回类型
	 * @date 2015年12月5日 下午4:14:40
	 * @throws
	 */
	public List<SysConfigMessage> getSysConfigMessageinfo(Long userId) throws Exception;

	/**
	 * @Title: delMessage
	 * @Description: TODO(删除消息)
	 * @param id
	 *            消息ID
	 * @param userId
	 *            用户ID
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return Map<String,Object> 返回类型
	 * @date 2015年12月5日 下午5:24:52
	 * @throws
	 */
	public Map<String, Object> delMessageByUser(Integer id, Long userId) throws Exception;

	/**
	 * @Title: getMsgList
	 * @Description:分页查询消息列表
	 * @param map
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return PageObject<SysConfigMessage> 返回类型
	 * @date 2015年12月18日 下午3:55:57
	 * @throws
	 */
	public PageObject<SysConfigMessage> getMsgList(Map<String, Object> map) throws Exception;

	/**
	 * @Title: getSysConfigMessageInfo
	 * @Description:获取某个消息的详情
	 * @param id
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return SysConfigMessage 返回类型
	 * @date 2015年12月18日 下午4:55:17
	 * @throws
	 */
	public SysConfigMessage getSysConfigMessageInfo(Integer id) throws Exception;

	/**
	 * @Title: updateMessageOk
	 * @Description:修改系统消息提交数据
	 * @param map
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return Map<String,Object> 返回类型
	 * @date 2015年12月19日 上午10:40:11
	 * @throws
	 */
	public Map<String, Object> updateMessageOk(Map<String, Object> map, Long userId) throws Exception;
	
	//新增
	public Map<String, Object> addMessgae(Map<String, Object> map, Long userId) throws Exception;

	/**
	 * @Title: delMessage
	 * @Description:删除系统消息
	 * @param map
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return Map<String,Object> 返回类型
	 * @date 2015年12月19日 上午10:55:21
	 * @throws
	 */
	public Map<String, Object> delMessage(Map<String, Object> map) throws Exception;

	/**
	 * @Title: addMessageByType
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param type
	 *            消息类型:1:系统消息2：理财产品到期通知3：上传图片通知，4：资产提现通知，
	 * @param userId
	 *            消息接收人
	 * @param passNo
	 *            是否通过审核 1:通过 2未通过
	 * @param content
	 *            内容
	 * @return
	 * @throws Exception
	 *             设定文件
	 * @return Map<String,Object> 返回类型
	 * @date 2015年12月19日 下午3:18:35
	 * @throws
	 */
	public Map<String, Object> addMessageByType(Map<String, Object> map, int isPush) throws Exception;

	/**
	 * 批量插入赎回消息
	 * 
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public Map<String, Object> addBatchRedeemMsg(Map<String, Object> map, int isPush) throws Exception;

	public List<SysConfigMessage> selectByObject(SysConfigMessage scm);

	/**
	 * 查询用户在时间段内所需推送的所有消息
	 * 
	 * @param scm
	 * @return
	 */
	public List<SysConfigMessage> getSysConfigMessageList(SysConfigMessage scm);

	/**
	 * 修改推送消息
	 * 
	 * @param configMessage
	 * @return
	 */
	public int updateSysConfigMessage(SysConfigMessage configMessage);

	/**
	 * push推送消息
	 * 
	 * @param id
	 */
	public void pushMessage1(Integer id);

	/**
	 * 查询消息信息
	 * 
	 * @param configMessage
	 * @return
	 */
	public SysConfigMessage selectSingle(SysConfigMessage configMessage);

	/**
	 * 单个消息推送
	 * 
	 * @param userId
	 * @param appCode
	 * @param id
	 *            消息ID
	 * @param title
	 *            消息标题
	 * @param content
	 *            消息内容
	 * @param extra
	 *            附加字典（如URL等）
	 * @return
	 */
	public int pushMessage(Long userId, String appCode, Integer msgId, String title, String content, Map<String, String> pushMap, Map<String, String> extra);

	/**
	 * 批量消息推送
	 * 
	 * @param appCode
	 * @param msgid
	 * @param title
	 * @param content
	 * @param extra
	 */
	public void pushMessage(String appCode, Integer msgid, String title, String content, Map<String, String> pushMap, Map<String, String> extra);

}
